package org.easysoa.registry.types; import java.security.InvalidParameterException; /** * * @author mkalam-alami * */ public class OperationInformation { /* constants to be used to serialize it (to nuxeo model prop, or even json...) */ public static final String OPERATION_NAME = "operationName"; public static final String OPERATION_PARAMETERS = "operationParameters"; public static final String OPERATION_RETURN_PARAMETERS = "operationReturnParameters"; public static final String OPERATION_DOCUMENTATION = "operationDocumentation"; public static final String OPERATION_IN_CONTENT_TYPE = "operationInContentType"; public static final String OPERATION_OUT_CONTENT_TYPE = "operationOutContentType"; private final String name; private String parameters; private String returnParameters; private String documentation; private String inContentType; private String outContentType; //private String methodSignature; public OperationInformation(String name, String parameters, String returnParameters, String documentation, String inContentType, String outContentType) { this.name = name; this.parameters = parameters; this.returnParameters = returnParameters; this.documentation = documentation; this.inContentType = inContentType; this.outContentType = outContentType; } public String getName() { return name; } public String getParameters() { return parameters; } public String getReturnParameters() { return returnParameters; } public String getDocumentation() { return documentation; } public String getInContentType() { return inContentType; } public String getOutContentType() { return outContentType; } @Override public boolean equals(Object o) { if (o instanceof OperationInformation) { return name.equals(((OperationInformation) o).name); } return false; } public void mergeWith(OperationInformation operation) throws InvalidParameterException { if (!operation.name.equals(this.name)) { throw new InvalidParameterException("Can't merge operations whose names don't match"); } if (operation.parameters != null) { this.parameters = operation.parameters; } if (operation.returnParameters != null) { this.returnParameters = operation.returnParameters; } if (operation.documentation != null && operation.documentation.length() != 0) { if (this.documentation != null && this.documentation.length() != 0) { this.documentation += "\n\nAdditional documentation:\n" + operation.documentation; // TODO i18n } else { this.documentation = operation.documentation; } } if (operation.inContentType != null) { this.inContentType = operation.inContentType; } if (operation.outContentType != null) { this.outContentType = operation.outContentType; } } }